//vue.config.js文件，当运行npm run serve命令时，系统会自动检测项目的根目录是否存在该文件，如果有自动加载，该文件里语法为commonJS，我们需要向外导出一个exports对象
//vue.config.js文件为整个手脚架项目的配置文件
const CompressionPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = /\.(js|css|json|txt|ico|svg)(\?.*)?$/i
const TerserPlugin = require('terser-webpack-plugin')
module.exports={
    //devSever字段，作为一个对象，用来对vue-cli的开发时服务器做配置
    /*devServer:{
        //配置服务器的端口
        //项目编译完成后是否自动打开浏览器
        //设置当前服务器的请求代理转发
        // proxy:'http://127.0.0.1:6677'  /!* 只有一个代理 *!/
        // 需要多个代理时
        proxy:{
            '/api1':{
                target:'http://127.0.0.1:6677',
                changeOrigin: true,
                //真正发起请求时，将区别代理的key从url里去掉
                pathRewrite:{
                    '^/api1':''
                }
            }
        }
    },*/
    publicPath:'/',
    configureWebpack: config => {
        config.optimization = {
            minimize: process.env.NODE_ENV === 'product',
            minimizer: [
                new TerserPlugin({
                    test: /\.js(\?.*)?$/i, // 匹配参与压缩的文件
                    parallel: true, // 使用多进程并发运行
                    terserOptions: {
                        // Terser 压缩配置
                        output: { comments: false }
                    },
                    extractComments: false // 将注释剥离到单独的文件中
                })
            ]
        }
    },
    chainWebpack(config) {
        if (process.env.NODE_ENV === 'product') {
            // 压缩
            config.plugin('compressionPlugin').use(
                new CompressionPlugin({
                    filename: '[path][base].gz',
                    algorithm: 'gzip',
                    test: productionGzipExtensions,
                    threshold: 1024,
                    minRatio: 0.8,
                    deleteOriginalAssets: true
                })
            )
        }
    }
}
